package org.yelongframework.excel.row;

import java.util.Objects;

import org.yelongframework.excel.cell.ExcelCell;
import org.yelongframework.excel.sheet.ExcelSheet;
import org.yelongframework.excel.workbook.ExcelWorkbook;

/**
 * 抽象实现
 * 
 * @since 1.0.0
 */
public abstract class AbstractExcelRow implements ExcelRow {

	/** 所属工作表 */
	private final ExcelSheet sheet;

	/** Excel行 */
	private final Object row;

	// ==================================================构造器==================================================

	/**
	 * @param sheet 所属工作表
	 * @param row   Excel行
	 */
	public AbstractExcelRow(ExcelSheet sheet, Object row) {
		this.sheet = Objects.requireNonNull(sheet, "sheet");
		this.row = Objects.requireNonNull(row, "row");
	}

	// ==================================================单元格值==================================================

	@Override
	public String getCellValueString(int colIndex) {
		ExcelCell excelCell = getCell(colIndex);
		if (null == excelCell) {
			return null;
		}
		return excelCell.getValueString();
	}

	@Override
	public String getCellValueIntString(int colIndex) {
		ExcelCell excelCell = getCell(colIndex);
		if (null == excelCell) {
			return null;
		}
		return excelCell.getValueIntString();
	}

	@Override
	public String getCellValueIntStringIf(int colIndex) {
		ExcelCell excelCell = getCell(colIndex);
		if (null == excelCell) {
			return null;
		}
		return excelCell.getValueIntStringIf();
	}

	// ==================================================所属的工作表==================================================

	@Override
	public ExcelSheet getSheet() {
		return sheet;
	}

	// ==================================================所属的工作薄==================================================

	@Override
	public ExcelWorkbook getWorkbook() {
		return sheet.getWorkbook();
	}

	// ==================================================行==================================================

	@Override
	public Object getRow() {
		return row;
	}

}
